#include "UserTable.h"

QSqlDatabase db2 = QSqlDatabase::database("KFC");    //获取指向数据库的连接

UserTable::UserTable(QObject *parent) : QObject(parent)
{

}

/**
 * user_table操作
 */

//数据库操作:创建用户表user_table
void UserTable::createUserTable(){
    QSqlQuery query(db2);

    /**
      * @leiteorz
      * name:用户名
      * category:判断是买家还是商家,0为客户,1为商家
      * account:用户的账号
      * password:用户的密码
      * phone_num:用户的手机号
      */
    const QString cmd = R"(
                        create table user_table(id integer primary key,
                                                name varchar(50),
                                                category integer,
                                                account varchar(50),
                                                password varchar(50),
                                                phone_num varchar(50));
                        )";

    query.exec(cmd);    //执行建表语句
}

//遍历查询所有用户
User* UserTable::queryAllUser(){
    QSqlQuery query(db2);
    //遍历数据库的内容
    query.exec("select * from user_table");
    User *u = new User[500];
    int i=0;

    while(query.next()){
        u[i].name = query.value(1).toString();
        u[i].category = query.value(2).toInt();
        u[i].account = query.value(3).toString();
//        qDebug()<<u[i-1].account;
        u[i].password = query.value(4).toString();
        u[i++].phone_num = query.value(5).toString();
    }

    return u;
}

//插入用户(即注册的时候创建新用户)
void UserTable::insertUser(User u){
    QSqlQuery query(db2);
    //数据插入(预分配空间)
    query.prepare("insert into user_table values(?,?,?,?,?,?)");
    //绑定要插入的值
    query.bindValue(1,u.name);
    query.bindValue(2,u.category);
    query.bindValue(3,u.account);
    query.bindValue(4,u.password);
    query.bindValue(5,u.phone_num);
    //调用exec()函数在query中插入上述值
    query.exec();
}

//修改用户信息
void UserTable::updateUser(QString account,QString name,QString phone_num){
    QSqlQuery query(db2);
    //数据修改
    query.exec("update user_table set name = '" + name + "' where account = '" + account + "'");
    query.exec("update user_table set phone_num = '" + phone_num + "' where account = '" + account + "'");
}
